package com.atguigu.lease.web.admin.custom.converter;

import com.atguigu.lease.model.enums.ItemType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

/**
 * ClassName: StringToItemTypeConverter
 * Package: com.atguigu.lease.web.admin.custom.converter
 * Description:
 * 定义转换器，该类的作用是：
 * 类型转换器，将String类型的数据转换为枚举类型。
 *
 * @Author 咚咚小圆帽
 * @Create 2025/1/21 16:09
 * @Version 1.0
 */
@Component
//String代表原数据类型，ItemType代表目标数据类型
public class StringToItemTypeConverter implements Converter<String, ItemType> {
    @Override
    public ItemType convert(String source) {
        //1代表公寓标签，2代表房间标签
        //这是我们能够想到的最简单的写法
//        if("1".equals(source)){
//            return ItemType.APARTMENT;
//        }else if("2".equals(source)){
//            return ItemType.ROOM;
//        }

        //为了使这个类型转换器更加的通用，我们还可以这么写
        //values()方法是所有枚举类型默认有的方法，它的作用是返回所有枚举常量的数组。
        for (ItemType value : ItemType.values()) {
            //让value中的code值与source进行对比，如果相等就成功了。
            //注意：code是Integer类型，source是String类型
            if(value.getCode().equals(Integer.valueOf(source))){
                return value;
            }
        }

        throw new IllegalArgumentException("传递进来的参数非法");

    }
}
